package com.slofzx.nuoda.evaluation.sysTools.controller;

import com.slofzx.nuoda.evaluation.sysTools.dto.CascadeDTO;
import com.slofzx.nuoda.evaluation.sysTools.vo.CascadeVO;
import com.slofzx.nuoda.evaluation.sysTools.service.CascadeService;
import org.springframework.web.bind.annotation.*;
import com.slofzx.nuoda.common.controller.BaseController;
import com.slofzx.nuoda.common.vo.AjaxResultVO;
import com.slofzx.nuoda.common.vo.PageResultVO;
import com.slofzx.nuoda.common.enums.ServiceResult;

import java.util.*;

import javax.annotation.Resource;

/**
 * 项目中所用到的上下级关联关系表控制层
 *
 * @author nuoda
 * @menu 项目中所用到的上下级关联关系表
 * @since 2024-03-22 16:40:10
 */
@RestController
@RequestMapping("/cascade")
public class CascadeController extends BaseController {
    /**
     * 服务对象
     */
    @Resource
    private CascadeService cascadeService;

    /**
     * 通过查询条件查询列表数据
     *
     * @param dto 查询参数
     * @return 列表数据
     */
    @GetMapping("/data")
    public AjaxResultVO<List<CascadeVO>> queryList(CascadeDTO dto) {
        List<CascadeVO> dataList = cascadeService.queryList(dto);
        return PageResultVO.newSuccessResult(dataList, dto.getCount());
    }


    /**
     * 通过查询条件查询Children数据
     *
     * @param dto 查询参数
     * @return 列表数据
     */
    @GetMapping("/queryChildrenList")
    public AjaxResultVO<List<CascadeVO>> queryChildrenList(CascadeDTO dto) {
        List<CascadeVO> dataList = cascadeService.queryChildrenList(dto);
        return PageResultVO.newSuccessResult(dataList, dto.getCount());
    }

    /**
     * 数据更新
     *
     * @param dto
     * @return 操作结果
     */
    @ResponseBody
    @PostMapping(value = "/update")
    public AjaxResultVO update(@RequestBody CascadeDTO dto) {
        ServiceResult resultEnum = cascadeService.update(dto);
        return AjaxResultVO.getInstance(resultEnum);
    }

    /**
     * 删除数据
     *
     * @param id
     * @return 操作结果
     */
    @ResponseBody
    @PostMapping(value = "/delete")
    public AjaxResultVO delete(@RequestParam String id) {
        ServiceResult resultEnum = cascadeService.deleteById(id);
        return AjaxResultVO.getInstance(resultEnum);
    }

}
